<?php
class Model_TarefaGuia extends App_Db_Table
{
    protected $_name             = 'tarefa_guia';
    protected $_primary          = array('id_tarefa_guia', 'fk_processo');

    protected $_referenceMap     = array(
                    'Processo' => array(
                            'columns'       => 'fk_processo',
                            'refTableClass' => 'Model_Processo',
                            'refColumns'    => 'id_processo',
                         ));


    public function gerarTarefasPorProcesso($fkProcesso, Zend_Db_Table_Row $rowProjeto)
    {
        $modelTarefa = new Model_Tarefa();
        $rowSetTarefaGuias = $this->fetchAll(array('fk_processo = ?' => $fkProcesso), 'nr_ordem');

        // Preenche dados padrões
        $aDadosTarefa['fk_projeto'] = $rowProjeto->id_projeto;
        $aDadosTarefa['fk_usuario'] = $rowProjeto->fk_usuario_responsavel;
        $aDadosTarefa['fk_usuario_cadastro'] = Zend_Auth::getInstance()->getIdentity()->id_usuario;
        $aDadosTarefa['fk_processo'] = $fkProcesso;
        $aDadosTarefa['cs_situacao'] = Model_Tarefa::SITUACAO_NAO_INICIADA;
        $aDadosTarefa['bo_previsao'] = true;

        $date = new Zend_Date();
        foreach ($rowSetTarefaGuias as $rowTarefaGuia) {
            $aDadosTarefa['fk_tarefa_guia'] = $rowTarefaGuia->id_tarefa_guia;
            $aDadosTarefa['st_nome']        = $rowTarefaGuia->st_nome;
            $aDadosTarefa['st_descricao']   = $rowTarefaGuia->st_descricao;
            $aDadosTarefa['dt_previsao_inicio'] = $date->get('dd/M/YYYY');

            // Calcula tempo da atividade em dias
            $date->addDay($rowTarefaGuia->nr_media_dias);
            // Verifica se a data fim é final de semana
            //0 = Sunday, 6 = Saturday
            switch ($date->get(Zend_Date::WEEKDAY_DIGIT)) {
                case 6 :
                    $date->addDay(2);
                    break;
                case 0 :
                    $date->addDay(1);
                    break;
            }
            $aDadosTarefa['dt_previsao_fim']    = $date->get('dd/M/YYYY');
            $modelTarefa->gravar($aDadosTarefa);
        }
        return $this;
    }
}